C# 程式在 .NET Framework 上執行,其為 Windows 不可或缺的元件,包括稱為通用語言執行平台 (CLR) 的虛擬執行系統和整合的一組類別庫。 CLR 是由 Microsoft 通用語言基礎結構 (CLI) 的商業實作,此國際標準是建立各種語言和程式庫都能一起順暢執行和開發環境的基礎。
以 C# 撰寫的原始程式碼會編譯成符合 CLI 規格的中繼語言 (IL) 。 IL 程式碼和像是點陣圖和字串的資源,會以稱為組件的可執行檔儲存在磁碟上,副檔名通常為 .exe 或 .dll。 組件包含的資訊清單提供有關組件的型別、版本、文化特性及安全性需求資訊。
C# 程式執行時,組件會載入至 CLR,根據資訊清單中的資訊執行各種不同動作。 然後,如果符合安全性需求,CLR 就會執行 Just-In-Time (JIT) 編譯以將 IL 程式碼轉換成原生機器指令。 CLR 也提供有關自動記憶體回收、例外狀況處理和資源管理的其他服務。 由 CLR 執行的程式碼有時稱為「Managed 程式碼 」,相對於會以特定系統為目標編譯成原生機器語言的「Unmanaged 程式碼 」。 下圖說明 C# 原始程式碼檔、.NET Framework 類別庫、組件及 CLR 的編譯時期和執行階段關聯性。
語言互通性是 .NET Framework 的一項重要功能。 由於 C# 編譯器所產生的 IL 程式碼符合通用型別規格 (CTS),所以從 C# 產生的 IL 程式碼可以和從 Visual Basic、Visual C++ 的 .NET 版本所產生的程式碼互動,或和 20 種以上的任何其他 CTS 相容語言互動。 單一組件可包含以不同的 .NET 語言撰寫的多個模組,而且型別可以彼此參考,如同它們都以相同的語言撰寫一般。
除了執行階段服務以外,.NET Framework 也包含超過 4000 種依據命名空間分類的大量類別庫,提供各式各樣的實用功能,從檔案輸入和輸出的字串操作乃至 XML 剖析,到 Windows Form 控制項的一切。 一般 C# 應用程式會使用廣泛用來處理常見「配管」例行工作的 .NET Framework 類別庫。